import axios from 'axios'
import { ElMessage } from 'element-plus'

// 后端接口基础地址（固定端口 8800）
const BASE_URL = 'http://localhost:8800'

// 设备管理相关接口
export const deviceAPI = {
    /**
     * 新增设备（板子）
     * @param {Object} data - 设备信息
     * @param {number} data.userId - 关联用户ID（当前登录用户ID）
     * @param {string} data.scene - 应用场景（fishpond/home/plantation/pigsty）
     * @param {string} data.name - 设备名称（自定义）
     * @param {number} [data.temperatureThreshold] - 温度阈值（可选，可空）
     * @param {number} [data.soilMoistureThreshold] - 土壤湿度阈值（可选，可空）
     * @param {number} [data.carbonMonoxideThreshold] - 一氧化碳浓度阈值（可选，可空）
     * @returns {Promise<boolean>} - 是否新增成功
     */
    addDevice: async (data) => {
        try {
            const response = await axios({
                url: `${BASE_URL}/board/add`,
                method: 'POST',
                data,
                timeout: 5000 // 请求超时时间 5 秒
            })
            return response.data // 后端返回 true/false
        } catch (error) {
            console.error('新增设备失败：', error)
            ElMessage.error('新增设备失败，请检查接口连接或网络状态')
            return false
        }
    },

    /**
     * 根据用户ID查询设备列表
     * @param {number} userId - 当前登录用户ID
     * @returns {Promise<Array>} - 设备列表数组（包含阈值字段）
     */
    getDevicesByUserId: async (userId) => {
        try {
            const response = await axios({
                url: `${BASE_URL}/board/get`,
                method: 'GET',
                params: { userId }, // 拼接查询参数 ?userId=xxx
                timeout: 5000
            })
            // 确保返回数组（后端可能返回单个对象或数组，统一处理为数组）
            return Array.isArray(response.data) ? response.data : [response.data]
        } catch (error) {
            console.error('查询设备列表失败：', error)
            ElMessage.error('查询设备列表失败，请检查接口连接或网络状态')
            return []
        }
    },

    /**
     * 根据设备ID查询单个设备（备用接口）
     * @param {number} id - 设备ID
     * @returns {Promise<Object>} - 单个设备信息（包含阈值字段）
     */
    getDeviceById: async (id) => {
        try {
            const response = await axios({
                url: `${BASE_URL}/board/get`,
                method: 'GET',
                params: { id },
                timeout: 5000
            })
            return response.data
        } catch (error) {
            console.error('查询单个设备失败：', error)
            ElMessage.error('查询设备失败，请检查接口连接或网络状态')
            return null
        }
    },

    /**
     * 根据设备ID删除设备
     * @param {number} id - 设备ID
     * @returns {Promise<boolean>} - 是否删除成功
     */
    deleteDeviceById: async (id) => {
        try {
            const response = await axios({
                url: `${BASE_URL}/board/delete`,
                method: 'DELETE',
                params: { id }, // 拼接查询参数 ?id=xxx
                timeout: 5000
            })
            return response.data // 后端返回 true/false
        } catch (error) {
            console.error('删除设备失败：', error)
            ElMessage.error('删除设备失败，请检查接口连接或网络状态')
            return false
        }
    }
}